unset on unknown variable is not an error, 
see http://www.opengroup.org/onlinepubs/009695399/utilities/unset.html
(from PLD)

@DPATCH@
Index: pdksh-5.2.14/c_sh.c
===================================================================
--- pdksh-5.2.14.orig/c_sh.c	2008-04-15 20:56:22.000000000 +0200
+++ pdksh-5.2.14/c_sh.c	2008-04-15 20:56:53.000000000 +0200
@@ -183,8 +183,10 @@
 	if (ksh_getopt(wp, &builtin_opt, null) == '?')
 		return 1;
 
-	if ((cp = wp[builtin_opt.optind]) == NULL)
-		return 0;
+	if ((cp = wp[builtin_opt.optind]) == NULL) {
+		bi_errorf("missing argument");
+		return 1;
+	}		
 	file = search(cp, path, R_OK, &err);
 	if (file == NULL) {
 		bi_errorf("%s: %s", cp, err ? strerror(err) : "not found");
